package com.atguigu.sso.service.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Controller
public class LoginController {

    /**
     * 跳转到登录页面
     */
    @RequestMapping("toLogin")
    public String toLogin(@RequestParam(value = "redirect_url", required = false)String url, Model model){
        model.addAttribute("url", url);
        return "login";
    }


    /**
     * 点击登录页面的登录按钮访问该方法
     */
    @RequestMapping("login")
    public String login(@RequestParam(value = "redirect_url", required = false)String url, HttpServletRequest request, HttpServletResponse response){

        /**
         * cookie的问题：1.作用域的问题：domain域名、路径
         *              2.过期时间的设置
         */
        Cookie cookie = new Cookie("token", "xxxxxxxxxxxxxxx");
        /*domain域名：设置为一级域名，这样所有的*.atguigu.com都可以使用该cookie。
        注意：设置域名时候，只有两个选择，一个是：当前访问该服务的url的域名(sso.atguigu.com)。 另一个是：它的上一级域名(atguigu.com)，
        否则会出问题，cookie无法正确设置给浏览器*/
        cookie.setDomain("atguigu.com");
        cookie.setPath("/hello");//路径：这是只有访问*.atguigu.com/hello 和 *.atguigu.com/hello/* 的路径的时候才能使用该cookie。不写这行默认为"/"
        //cookie.setHttpOnly(true);//只处理http请求，一般不这样设置，设置后https请求就不能使用该cookie了
        cookie.setMaxAge(24*60*60);//单位秒 cookie的存活时间，设置之后，cookie会被浏览器持久化
        response.addCookie(cookie);
        return "redirect:" + url;
    }
}
